導航:首頁 > 源碼編譯 > 整數55的源碼

整數55的源碼

發布時間:2022-12-28 00:06:45

Ⅰ c++自定義一個函數fun(char+*p),其功能是將一個數字字元串轉換為一個整數

C++代碼和運行結果如下:

輸入num="12345",輸出fun(num)成功得到其轉為的整數12345,望採納~

源碼

#include <iostream>

using namespace std;

int fun(char *p) {

int num = 0;

for (int i = 0; p[i] != ''; i++)

num = num * 10 + p[i] - '0';

return num;

}

int main() {

char num[10] = {0};

cin >> num;

cout << fun(num) << endl;

return 0;

}

Ⅱ 根據數組中給定的整數序列建立一個單鏈表,並對單鏈表進行升序排序,輸出排序之後的單鏈表 求源代碼急急急

以下程序把代碼的前面數字去掉就可以

4 #include<stdio.h>
5 #include<stdlib.h>
6 typedef struct node //節點聲明
7 {
8 int Data;
9 struct node* Next;
10 }Node;
11
12 typedef Node* PNode; //將節點Node* 用PNode代替
13
14 typedef struct //鏈表LinkList的定義
15 {
16 PNode Head;
17 PNode Tail;
18 int Size;
19 }LinkList;
3 void CreateList(LinkList *ls) //鏈表初始化
4 {
5 ls->Head = NULL;
6 ls->Tail = NULL;
7 ls->Size = 0;
8 }
10 int AppendNode(LinkList *ls, int Data) //增加鏈表節點
11 {
12 PNode newnode;
13 newnode = (PNode)malloc(sizeof(Node));
14 newnode->Data = Data;
15 newnode->Next = NULL;
16 if(ls->Head == NULL)
17 {
18 ls->Head = newnode;
19 ls->Tail = newnode;
20 }
21 else
22 {
23 ls->Tail->Next = newnode;
24 ls->Tail = newnode;
25 }
26 ls->Size++;
27 }
30 void DestroyList(LinkList *ls) //釋放鏈表
31 {
32 PNode tmpnode = ls->Head;
33 while(tmpnode)
34 {
35 tmpnode = tmpnode->Next;
36 free(ls->Head);
37 ls->Head = tmpnode;
38 }
39 ls->Head = NULL;
40 ls->Tail = NULL;
41 ls->Size = 0;
42 }
44 void PrintList(LinkList *ls) //列印鏈表
45 {
46 PNode tmpnode;
47 int i=0;
48 tmpnode = ls->Head;
49 printf("\t\t");
50 while(tmpnode != NULL)
51 {
52 if(i%5 == 0)
53 {
54 putchar('\n');
55 printf("\t\t");
56 }
57 printf("\t%-d",tmpnode->Data);
58 tmpnode = tmpnode->Next;
59 i++;
60 }
61 putchar('\n');
62 }
140 int SortNode(LinkList *ls) //根據節點中的數據Data,升序排序
141 {
142 PNode tmpnode,endnode,newnode;
143 int tmp;
144 endnode = ls->Tail;
145 while(endnode != ls->Head)
146 {
147 tmpnode = ls->Head;
148 while(tmpnode != endnode)
149 {
150 if(tmpnode->Data > tmpnode->Next->Data)
151 {
152 tmp = tmpnode->Data;
153 tmpnode->Data = tmpnode->Next->Data;
154 tmpnode->Next->Data = tmp;
155 }
156 newnode = tmpnode;
157 tmpnode = tmpnode->Next;
158 }
159 endnode = newnode;
160 }
161 return 0;
162 }

2 int main() //主函數
3 {
4 LinkList ls;
5 int i,n,k,p;
6 CreateList(&ls);
7 srand(time(NULL)); //產生隨機數的種子
8 for(i=0;i<20;i++)
9 {
10 AppendNode(&ls,rand()%100); //生成節點,節點的Data數據為0~99的隨機數
11 }
12 printf("輸出一個隨機鏈表:\n");
13 PrintList(&ls);
14 putchar('\n');
30 printf("經過排序後的鏈表為:\n");
31 SortNode(&ls);
32 PrintList(&ls);
36 DestroyList(&ls);
37 }

Ⅲ 小數和分數的原碼&補碼怎麼做啊

一、小數部分的原碼和補碼可以表示為兩個復數的分子和分母,然後計算二進制小數系統,根據下面三步的方法就會找出小數源代碼和補碼的百位形式。

37/64=100101B/2^6=0.100101B

-51/128=110011B/2^7=0.0110011B

二、將十進制十進制原始碼和補碼轉換成二進制十進制,然後根據下面三步的方法求出十進制源代碼和補碼形式。一個

0.375=0.011B

0.5625=0.1001B

三、二進制十進制對應的原碼和補碼

[37/64]源代碼=[0.100101B]源代碼=00100101B

[-51/128]源代碼=[0.0110011b]源代碼=10110011B

[0.375]原碼=[0.011b]原碼=00110000B

[0.5625]源代碼=[0.1001B]源代碼=01001000B

[37/64]補體=[0.100101B]補體=00100101B

[-51/128]補體=[0.0110011b]補體=11001101B

[0.375]補碼=[0.011b]補碼=00110000B

[0.5625]補體=[0.1001B]補體=01001000B

(3)整數55的源碼擴展閱讀:

原碼、逆碼、補碼的使用:

在計算機中對數字編碼有三種方法,對於正數,這三種方法返回的結果是相同的。

+1=00000001[原碼]=00000001[逆碼]=00000001[補碼]

對於這個負數:

對計算機來說,加、減、乘、除是最基本的運算。有必要使設計盡可能簡單。如果計算機能夠區分符號位,那麼計算機的基本電路設計就會變得更加復雜。

負的正數等於正的負數,2-1等於2+(-1)所以這個機器只做加法,不做減法。符號位參與運算,只保留加法運算。

(1)原始代碼操作:

十進制操作:1-1=0。

1-1=1+(-1)=00000001[源代碼]+10000001[源代碼]=10000010[源代碼]=-2。

如果用原代碼來表示,讓符號位也參與計算,對於減法,結果顯然是不正確的,所以計算機不使用原代碼來表示一個數字。

(2)逆碼運算:

為了解決原碼相減的問題,引入了逆碼。

十進制操作:1-1=0。

1-1=1+(-1)=00000001[源代碼]+10000001[源代碼]=00000001[源代碼]+11111110[源代碼]=11111111[源代碼]=10000010[源代碼]=-0。

使用反減法,結果的真值部分是正確的,但在特定的值「0」。雖然+0和-0在某種意義上是相同的,但是0加上符號是沒有意義的,00000001[源代碼]和10000001[源代碼]都代表0。

(3)補充操作:

補語的出現解決了零和兩個碼的符號問題。

十進制運算:1-1=0。

1-1=1+(-1)=00000001[原碼]+10000001[原碼]=00000001[補碼]+11111111[補碼]=00000000[補碼]=00000000[原碼]=0。

這樣,0表示為[00000000],而之前的-0問題不存在,可以表示為[10000000]-128。

(-1)+(-127)=10000001[源代碼]+11111111[源代碼]=11111111[補充]+10000001[補充]=1000000[補充]=-128。

-1-127的結果應該是-128。在補碼操作的結果中,10000000[補碼]是-128,但是請注意,由於-0的補碼實際上是用來表示-128的,所以-128沒有原碼和逆碼。(-128的補碼表10000000[補碼]計算出的00000000[原碼]是不正確的)。

Ⅳ 易語言 數字相加

你寫5522是55和22相加還是5和522相加,還是。。?幾個數字之間肯定要符號間隔開的,比如55,22這樣就是55和22相加,如果是整數相加請把結果的類型改為整數型。
給你個源碼吧:
.版本 2
.支持庫 spec

.子程序 _按鈕1_被單擊
.局部變數 數字數組, 文本型, , "0"
.局部變數 計次, 整數型
.局部變數 結果, 小數型

數字數組 = 分割文本 (編輯框1.內容, 「,」, ) ' 以英文逗號間隔數字
.計次循環首 (取數組成員數 (數字數組), 計次)
結果 = 結果 + 到數值 (數字數組 [計次])
.計次循環尾 ()
調試輸出 (結果)
是否可以解決您的問題?

Ⅳ 假定某台計算機的機器數佔8位計算出有符號十進制數-55的源碼,反碼和補碼


因為是8位,所以在符號位和數值位間加一個0

Ⅵ 給下列16進制數,若將此數分別視為無符號數,源碼,補碼,反碼和移碼表示,寫出對應的十進制整數

50H = 0101 0000B

50H 當做無符號數字,代表:80。
50H 當做原碼,代表:80。
50H 當做反碼,代表:80。
50H 當做補碼,代表:80。
50H 當做移碼,代表:-48。

FEH = 1111 1110B

FEH 當做無符號數字,代表:254。
FEH 當做原碼,代表:-126。
FEH 當做反碼,代表:-1。
FEH 當做補碼,代表:-2。
FEH 當做移碼,代表:+126。

Ⅶ C語言程序

#include<stdio.h>

#include<math.h>

intmain(){

inti,x,max = -1,a[16],temp;

floatave=0.0;

a[0]=55;

for(i=1;i<16;i++)

a[i]=(15*a[i-1]+97)%256;

for(i=0;i<16;i++){

printf("%d",a[i]);

ave+=(float)a[i];

}

ave/=16.0;

printf(" ave=%.1f",ave);

for(i=0;i<16;i++){

temp= abs(a[i]-ave);

if(temp>max){

max=temp;

x=i;

}

}

printf("差最大的數:%d ",a[x]);

for(i=0,max=0;i<16;i++,max++){

if(i==x)max++;

a[i]=a[max];

}

for(i=0;i<15;i++)

printf("%d",a[i]);

return0;

}

//效果也一樣

Ⅷ 整理一下關於原碼反碼補碼筆記

一個數據表示時使用,第一位為符號位,剩餘的為有效位

字16位 1位符號 15有效數據位

int>整數 4個位元組32

-2 31-2 32-1

long>長整形8個位元組64一位符號63

-2 63-2 63-1

1000 0111 (-7)二轉十

機器數
機器數就是一個數在計算機中二進製表現形式
+3 0000 0011
+7 0000 0111
-5 1000 0101

機器數的真值
將帶符號位的機器數對應的真正數值稱為機器數的真值
0000 0011 = +3
0000 0111 = +7
1000 0101 = -5

原碼就是符號位加上真值的絕對值

求原碼:

34=00100010

原碼 -39 1 0 1 0 0 1 1 1

原碼 -55 1 0 1 1 0 1 1 1

正數:正數的反碼=源碼 如 +9:0000 1001 源碼=0000 1001 反

負數:符號位不變,其餘各位琢一取反,只有兩種狀態{0,1},即1->0 0->1

負數
負數的反碼是保持符號位不變,其餘各位直接取反
取反: 只有0 和 1兩種狀態,也就是 0 -> 1 , 1 -> 0
-3 1000 0011[原] = 1111 1100[反]

正數:正數的原碼=反碼=補碼 如+3 0000 0011 {原}=0000 0011{反}=0000 0011 {補}

負數:先求的反碼,在負數反碼的基礎上,加一

補碼需要在反碼的基礎上轉換得到
正數
正數的原碼 反碼 補碼 全部相同
+1 0000 0001[原] = 0000 0001[反] = 0000 0001[補]

負數
負數的補碼需要在反碼的基礎上,最後一位加 1;
-3 1111 1100[反] = 1111 1101[補

擴展

為什麼需要反碼和補碼?

在設計計算機時,只設計了加法器沒有設計減法器

5-3=5+(-3)

原碼

5=0000 0101 (原碼)

-3=1000 0011 (原碼)

0000 0101

1000 0011

1000 1000 結果(原碼)=-8

原碼不可以直接計算的!

反碼:解決了只設計加法器,使用加法器進行減法運算的問題;

缺點:正負相加0的表示不唯一

1-1=1+(-1)

1=0000 0001 {反}

-1=1000 0001 {原碼}

-1=1111 1110 {反碼}

0000 0001

1111 1110

1111 1111 {反碼}=1000 0000{原碼}=-0 負0

補碼{高位溢出}

1=0000 0001{補}

-1=1111 1111{補}

0000 0001

1111 1111

0000 0000

一個位元組8位,表達的范圍-2 7-2 7-1

32+12=44

44-12=32

44+(-12)=32

將補碼轉原碼

因為負數的補碼不能直接讀出結果,但是原碼可以,所以將補碼轉原碼,可以讀出負數的值

補碼>原碼

原則:==補碼的補碼

把補碼當原碼,求補碼

計算規則:符號位不變,其餘取反,加1;

ASCll編碼:最早的最重要的基本的英美文字的字元集

只使用了低7位二進制,其他的認為無效,它使用了0-127這128個碼位。剩下128個碼位留作擴展,採用順序存儲方式存儲字元

ISO-8859-*

使用ASCll 剩餘的碼位進行擴展

iso-8859-1專門對英語做的擴展 tomcat>默認採用iso-8859-1》utf-8

西歐國家較多,各個國家在ASCll基礎上,擴展形成了自己國家專用的編碼,最終形成了ISO-8859-*系列

GB2312

GB2312字集是簡體,6763個簡體漢字

BIG5

繁體字集

Unicode

字元集(簡稱為UCS)

GBK【936】

是簡繁字集,包括GB2312字集,BlG5字集合一些符號,共包括21003個字元。GBK編碼是GB2312的超級,向下完全兼容GB2312

UTF-8[65001]萬國碼

包含全世界所有國家需要用到的字元,是國際編碼,它對英文使用8位(即一個位元組),中午使用3個位元組

ANSl

ANSl不是一種具體的編碼

系統默認的編碼決定,如果系統的默認的編碼是GBK> ANSl就代表 GBK

認識ASCll碼表

常用:0-9 A-Z a-z對應的ASCll碼分別為:48-57,65-90,97-122

0>48

A>65

a>97

Ⅸ 求C++源代碼 已知四位數如3025,有一個特殊性質: 它的前兩位數字30和後兩位數字25的和是5

for(inti=1000;i<10000;i++)
{
intleft=i/100;
intright=i%100;
if((left+right)*(left+right)==i)
{
printf("%d",i);
}
}

Ⅹ 一個數的原碼,反碼,補碼怎麼算

計算機中的存儲系統都是用2進制儲存的,對我們輸入的每一個信息它都會自動轉變成二進制的形式,而二進制在存儲的時候就會用到原碼,反碼和補碼例如:輸入25原碼是:0000000000011001反碼: 1111111111100110 補碼: 1111111111100111

數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,"正如亞里士多德早就指出的那樣,今天十進制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.盡管在歷史上手指計數(5,10進制)的實踐要比二或三進制計數出現的晚. "(摘自<<數學發展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進制轉換,就使用了十六進制(2 4)和八進制(23).下面進入正題.

數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為

(-127~-0 +0~127)共256個.

有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits

( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.

因為在兩個整數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算:

( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題.

( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確

問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記並放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大).

於是就引入了補碼概念. 負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的.在補碼中用(-128)代替了(-0),所以補碼的表示範圍為:

(-128~0~127)共256個.

注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000) 補碼的加減運算如下:

( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)補 + (11111111)補 = (00000000)補 = ( 0 ) 正確

( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 補+ (11111110) 補= (11111111)補 = ( -1 ) 正確

所以補碼的設計目的是:

⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.

⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計

所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼

閱讀全文

與整數55的源碼相關的資料

熱點內容
好興動app還款怎麼登錄不上去了 瀏覽:663
鄭州雲伺服器託管 瀏覽:720
伺服器地址跟蹤 瀏覽:978
免費google雲伺服器 瀏覽:516
摘譯和編譯的英文 瀏覽:359
熱泵壓縮機選型 瀏覽:121
op手機微信加密如何解除 瀏覽:386
如何在王牌戰爭找到高爆率伺服器 瀏覽:13
江浙小學語文輔導課用什麼APP 瀏覽:99
新夢幻大陸伺服器地址 瀏覽:241
網吧伺服器怎麼更換壁紙 瀏覽:530
linux命令方法 瀏覽:332
linux下載freetype 瀏覽:123
程序員入駐平台 瀏覽:327
程序員大戰外掛 瀏覽:745
html實例教程pdf 瀏覽:157
linux命令開放所有許可權 瀏覽:575
30歲能學會編程 瀏覽:737
小火箭的伺服器是什麼 瀏覽:967
cad查信息命令 瀏覽:402