當前位置:首頁 » 編程語言 » c語言位元組位數有什麼影響
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言位元組位數有什麼影響

發布時間: 2022-09-24 12:54:13

1. 編程c語言位元組的問題

8位就是8位二進制,每位為0或者1。int,long 能表示多個位元組的有符號數,long表示的數比int大很多。一個字元一般是char數據類型,char一般是一個位元組。

2. 計算機位數對c語言中隨機數的結果是否有影響

是有影響的。比如說16位的機器int類型只佔2個位元組,最大可以表示2的16次方,32位的機器int類型佔4個位元組,最大可以表示2的32次方。因此產生的隨機數范圍也不同。

3. c語言的位元組數是什麼意思

int佔多少個位元組是由編譯器決定的,ANSI標準定義int是佔2個位元組.
TC是按ANSI標準的,它的int是佔2個位元組的.
你可以在TC里試.printf("%d",sizeof(int));結果是2;
但是在VC里,一個int是佔4個位元組的,在VC裡面,
printf("%d",sizeof(int));
cout<<sizeof(int);結果都是4.
不同的編譯器,規定也不一樣.
float,double也是一樣的,在不同的編譯器里,占的位元組是不一樣的.

4. c語言里位元組與位數的問題

計算機都是按照2進制算的,一個位元組是8個二進制位,無符號數表示範圍是0-255。單精度數是按照IEE的規范編碼的它分為小數部分和指數部分,每個部分又都是帶符號的,小數部分去掉符號剩餘的可以轉換成十進制的准確位數就是7位。具體的你可以查一下浮點數的編碼規則,然後自己換算一下就知道了。

5. C語言中的「高位位元組」和「低位位元組」是什麼意思

通常我們從最高有效位(most significant digit)開始自左向右書寫一個數字。在理解有效位這個概念時,可以想像一下你的支票數額的第一位增加1和最後一位增加1之間的巨大區別,前者肯定會讓你喜出望外。


計算機內存中一個位元組的位相當於二進制數的位,這意味著最低有效位表示1,倒數第二個有效位表示2×1或2,倒數第三個有效位表示2×2×1或4,依此類推。如果用內存中的兩個位元組表示一個16位的數,那麼其中的一個位元組將存放最低的8位有效位,而另一個位元組將存放最高的8位有效位,見圖10.5。存放最低的8位有效位的位元組被稱為最低有效位位元組或低位位元組,而存放最高的8位有效位的位元組被稱為最高有效位位元組或高位位元組。


高位位元組 低位位元組
↓--------------------------↓ ↓---------------------------↓

15 14 13 12 11 10 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.

6. 小白求教C語言得位元組是什麼意思》它有什麼作用

這個不是C語言的知識,是計算機基礎
在計算機中的存儲數據是二進制存儲,也就是說數據都是一串0、1組成的數字。比如00110011.
這裡面,每一位二進制數字都叫一個比特,沒8比特就是一個位元組。位元組就相當於是數據量的一個單位

7. C語言中數據類型所佔位元組數與它取值范圍的關系

C語言中的數據類型,簡單的可以分為整數類型和浮點數類型。所佔位元組數與取值范圍的關系實際上是整數編碼和浮點數編碼的問題,整數編碼的三種方式是原碼、反碼、補碼,很容易理解,浮點數的編碼格式使用的是IEEE754編碼。


1、整數編碼以字元類型為例。

字元類型佔1個位元組,共8位二進制bit位,因此排列組合數,有2^8 = 256種編碼的方法。如果表示無符號字元類型,那一般來說表示【0,255】這256個數。


如果表示有符號char類型,如果表示正數,那最高位符號為0,因此可表示的最正整數是:

0-111 1111 ,轉化成十進制就是127。同樣的道理,符號為1表示負數。最小的負數是

1-000 0000,轉化成十進制數就是-128,因此有符號char類型表示的范圍是[-128,127]。


一般來說,假設整型數據類型占的二進制位數n,如果表示無符號整數則取值范圍是[0,2^n-1],如果表示有符號整數,【-2^(n-1) , 2^(n-1) - 1] 。


2、浮點數類型

浮點數編碼一般採用的是IEEE754的編碼規則,這個編碼格式主要指出了浮點數有效數字、指數以及符號位所佔的二進制位數。簡單概括為:


格式 長度 符號位 指數位 尾數位 有效位數 指數偏移 尾數說明

單精度 32 1 8 23 24 127 有一位隱含位

雙精度 64 1 11 52 53 1023 有一位隱含位

擴展雙精度 80 1 15 64 64 16383 沒有隱含位

注意:擴展雙精度格式沒有隱含位,因此它的有效位數與尾數位數一致,而單精度和雙精度格式均有一位隱含位,因此它們的有效位數比尾數位數多1。


一般很少自己手動來算浮點數的取值范圍,可以使用如下程序來計算。

#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
typedefstructFP_DOUBLE
{
unsigned__int64fraction:52;
unsigned__int64exp:11;
unsigned__int64sign:1;
}fp_double;
typedefstructFP_EX_DOUBLE
{
unsigned__int64fraction;
unsigned__int32exp:15;
unsigned__int32sign:1;
}fp_ex_double;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱規范數:%le ",(double)x);
doubley;
fp_double*fp_d=(fp_double*)&y;
fp_d->sign=0;
fp_d->exp=0x7fe;
fp_d->fraction=0xfffffffffffff;
printf("double最大數:%le ",y);
fp_d->sign=0;
fp_d->exp=0x1;
fp_d->fraction=0x0;
printf("double最小數:%le ",y);
fp_d->sign=0;
fp_d->exp=0;
fp_d->fraction=0x1;
printf("double最小弱規范數:%le ",y);
charch[10];
fp_ex_double*fp_ex_d=(fp_ex_double*)ch;
fp_ex_d->sign=0;
fp_ex_d->exp=0x7ffe;
fp_ex_d->fraction=0xffffffffffffffff;
//不知道擴展雙精度浮點數如何輸出,
//不過可以用od跟蹤,然後找到ch[0]的地址,在數據窗口中選擇浮點80為長雙精度,
//就可以看到數值了。
fp_ex_d->sign=0;
fp_ex_d->exp=0x1;
fp_ex_d->fraction=0x8000000000000000;
fp_ex_d->sign=0;
fp_ex_d->exp=0;
fp_ex_d->fraction=0x1;
return0;
}

8. C語言中位元組問題

不同的編譯器所規定的位元組數有所差異,可以用函數sizeof()進行測試,例如想測試int類型佔多少位元組:printf("sizeof(int)=%d\n",sizeof(int));結果就是int類型所佔的位元組數!對於其他的類型一樣適用...樓主可以親自嘗試一下,呵呵,還有什麼不懂么?