日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言负数除法运算过程,C语言负数的除法和求余运算

發布時間:2023/12/14 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言负数除法运算过程,C语言负数的除法和求余运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假定我們讓 a 除以 b,商為 q,余數為 r: q = a / b;

r = a % b;

這里,不妨假定 b 大于 0。

我們希望 a、b、q、r 之間維持怎樣的關系呢?

1.最重的一點,我們希望 q * b + r == a,因為這是定義余數的關系。

2.如果我們改變 a 的正負號,我們希望這會改變 q 的符號,但這不會改變 q ?的絕對值。

3.當 b>0 時,我們希望保證 r >= 0 且 r < b。例如,如果余數用于哈希表的索引,確保 它是一個有效的索引值很重 。

這三條性質是我們認為整數除法和余數操作所應該具備的。很不幸的是,它們不可能同時成立。

考慮一個簡單的例子:3/2,商為 1,余數也為 1。此時,第 1 條性質得到了滿足。(-3)/2 的值應該是多少呢?如果 滿足第 2 條性質,答案應該是-1,但如果是這樣,余數就必定是-1,這樣第 3 條性質就無法滿足了。如果我們首先滿足第 3 條性質,即余數是 1,這種情況下根據第 1 條性質則商是-2,那么第 2 條性質又無法滿足了。

因此,C 語言或者其他語言在實現整數除法截斷運算時,必須放棄上述三條原則中的至 少一條。大多數程序設計語言選擇了放棄第 3 條,而改為 求余數與被除數的正負號相同。 這樣,性質 1 和性質 2 就可以得到滿足。大多數 C 編譯器在實踐中也都是這樣做的。

然而,C 語言的定義只保證了性質 1,以及當 a>=0 且 b>0 時,保證|r| < |b|以及 r>=0。 后面部分的保證與性質 2 或者性質 3 比較起來,限制性 弱得多。

C 語言的定義雖然有時候會帶來不需 的靈活性,但大多數時候,只要編程者清楚地知道要做什么、該做什么,這個定義對讓整數除法運算滿足其需要來說還是夠用了的。例如,

假定我們有一個數 n,它代表標識符中的字符經過某種函數運算后的結果,我們希望通過除 法運算得到哈希表的條目 h,滿足 0<=h

h=n%HASHSIZE:

然而,如果 n 有可能為負數,而此時 h 也有可能為負,那么這樣做就不一定總是合適 的了。不過,我們己知 h>-HASHSIZE,因此我們可以這樣寫:

h = n % HASHSIZE;

if(n < 0)

h += HASHSIZE;

更好的做法是,程序在設計時就應該避免 n 的值為負這樣的情形,并且聲明 n 為無符號數。

測試代碼:

#include

main()

{

int a=-, b=;

int q,r;

q = a / b;

r = a % b;

printf("q=%d, r=%d\n", q, r);

}

Swift 求余運算

求余運算 求余運算(a % b)是計算b的多少倍剛剛好可以容入a,返回多出來的那部分(余數). 注意:求余運算(%)在其他語言也叫取模運算.然而嚴格說來,我們看該運算符對負數的操作結果,"求 ...

java 整除&lpar;&sol;&rpar; 求余&lpar;&percnt;&rpar; 運算

1. java 整除(/)? 求余(%)? 運算 1.求余??? System.out.println(11%2);???? //顧名思義就是11除2的余數-->1??? System.out. ...

PHP&colon;第一章——按位運算和求余運算(判斷奇偶數)

051-PHP求余運算

和求余運算巧妙結合的jns指令

.text:004A78B1 ?and eax, 80000001h.text:004A78B6 ?jns short loc_4A78BD.text:004A78B8 dec eax.text:00 ...

Sicily1020-大數求余算法及優化

Github最終優化代碼:?https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1020.c 題目如下: 1020. ...

Verilog求余

在實現三角函數時,考慮到函數的周期性,綜量(自變量)需對周期做求余運算. 假設函數周期為T = 2^N,那么求余運算就是直接取該數的低N位,即: 以M位正數為例(符號位為0),reg [M-1:0] ...

java學習--高效的除模取余運算&lpar;n-1&rpar;&amp&semi;hash

沒有測試過使用取余運算符和位運算符都做同一件事時的時間效率! 取余運算符% 如3除以2取余數 a = a%; 結果為1 上面是傳統的方式進行求余運算. 需要先將10進制轉成2進制到內存中進行計算,然后 ...

C語言 負數取余的原理

負數求余數運算是一個數學問題: 任何一個整數n都可以表示成 n=k*q+r 其中0<=|r|

隨機推薦

如何一步一步用DDD設計一個電商網站(四)—— 把商品賣給用戶

閱讀目錄 前言 怎么賣 領域服務的使用 回到現實 結語 一.前言 上篇中我們講述了“把商品賣給用戶”中的商品和用戶的初步設計.現在把剩余的“賣”這個動作給做了.這里提醒一下,正常情況下,我們的每一步業 ...

win10 64位專業版系統中顯示32位dcom組件配置的方法

word.excel是32位的組件,當用戶64位系統在運行窗口中輸入dcomcnfg命令時,在打開的組件服務管理窗口,是找不到Microsoft?Excel.word程序的.另外,Windows?環境 ...

新浪微博頂部新評論提示層效果——position:fixed

總結

以上是生活随笔為你收集整理的c语言负数除法运算过程,C语言负数的除法和求余运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。